/*
 * Copyright © 2021 Cask Data, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
*/

const { spawn } = require('child_process');
const path = require('path');
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');

function stringifyop(data) {
  var textChunk = decoder.write(data);
  if (textChunk) {
    console.log(textChunk);
  }
}
function startCDAP(pathToCDAP) {
  return new Promise((resolve, reject) => {
    const tool = spawn(path.join(pathToCDAP), ['sandbox', 'start']);
    tool.stdout.on('data', stringifyop);
    tool.stderr.on('data', stringifyop);
    tool.on('exit', function(code) {
      if (code > 0) {
        reject(`Unable to start CDAP. Please check logs for more information.`);
      }
      resolve(code);
    });
  });
}

module.exports = startCDAP;
